home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / FROMUTS / CDUNGEON / !CDUNGEON / c / DSO5 < prev    next >
Text File  |  1991-05-20  |  3KB  |  189 lines

  1. /*COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142*/
  2. /* ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED */
  3. /* WRITTEN BY R. M. SUPNIK */
  4.  
  5. #include "funcs.h"
  6. #include "vars.h"
  7.  
  8. /* GTTIME-- GET TOTAL TIME PLAYED */
  9.  
  10. void gttime_(t)
  11. integer *t;
  12. {
  13.     integer h, m, s;
  14.  
  15.     itime_(&h, &m, &s);
  16.     *t = h * 60 + m - (time_1.shour * 60 + time_1.smin);
  17.     if (*t < 0) {
  18.     *t += 1440;
  19.     }
  20.     *t += time_1.pltime;
  21.     return;
  22. } /* gttime_ */
  23.  
  24. /* OPNCLS-- PROCESS OPEN/CLOSE FOR DOORS */
  25.  
  26. /* DECLARATIONS */
  27.  
  28. logical opncls_(obj, so, sc)
  29. integer obj;
  30. integer so;
  31. integer sc;
  32. {
  33.     /* System generated locals */
  34.     integer i__1;
  35.     logical ret_val;
  36.  
  37.     ret_val = TRUE_;
  38. /*                         !ASSUME WINS. */
  39.     if (prsvec_1.prsa == vindex_1.closew) {
  40.     goto L100;
  41.     }
  42. /*                         !CLOSE? */
  43.     if (prsvec_1.prsa == vindex_1.openw) {
  44.     goto L50;
  45.     }
  46. /*                         !OPEN? */
  47.     ret_val = FALSE_;
  48. /*                         !LOSE */
  49.     return ret_val;
  50.  
  51. L50:
  52.     if ((objcts_1.oflag2[obj - 1] & OPENBT) != 0) {
  53.     goto L200;
  54.     }
  55. /*                         !OPEN... IS IT? */
  56.     rspeak_(so);
  57.     objcts_1.oflag2[obj - 1] |= OPENBT;
  58.     return ret_val;
  59.  
  60. L100:
  61.     if (! ((objcts_1.oflag2[obj - 1] & OPENBT) != 0)) {
  62.     goto L200;
  63.     }
  64. /*                         !CLOSE... IS IT? */
  65.     rspeak_(sc);
  66.     objcts_1.oflag2[obj - 1] &= ~ OPENBT;
  67.     return ret_val;
  68.  
  69. L200:
  70.     i__1 = rnd_(3) + 125;
  71.     rspeak_(i__1);
  72. /*                         !DUMMY. */
  73.     return ret_val;
  74. } /* opncls_ */
  75.  
  76. /* LIT-- IS ROOM LIT? */
  77.  
  78. /* DECLARATIONS */
  79.  
  80. logical lit_(rm)
  81. integer rm;
  82. {
  83.     /* System generated locals */
  84.     integer i__1, i__2;
  85.     logical ret_val;
  86.  
  87.     /* Local variables */
  88.     integer i, j, oa;
  89.  
  90.     ret_val = TRUE_;
  91. /*                         !ASSUME WINS */
  92.     if ((rooms_1.rflag[rm - 1] & RLIGHT) != 0) {
  93.     return ret_val;
  94.     }
  95.  
  96.     i__1 = objcts_1.olnt;
  97.     for (i = 1; i <= i__1; ++i) {
  98. /*                         !LOOK FOR LIT OBJ */
  99.     if (qhere_(i, rm)) {
  100.         goto L100;
  101.     }
  102. /*                         !IN ROOM? */
  103.     oa = objcts_1.oadv[i - 1];
  104. /*                         !NO */
  105.     if (oa <= 0) {
  106.         goto L1000;
  107.     }
  108. /*                         !ON ADV? */
  109.     if (advs_1.aroom[oa - 1] != rm) {
  110.         goto L1000;
  111.     }
  112. /*                         !ADV IN ROOM? */
  113.  
  114. /* OBJ IN ROOM OR ON ADV IN ROOM */
  115.  
  116. L100:
  117.     if ((objcts_1.oflag1[i - 1] & ONBT) != 0) {
  118.         return ret_val;
  119.     }
  120.     if ((objcts_1.oflag1[i - 1] & VISIBT) == 0 || (
  121.         objcts_1.oflag1[i - 1] & TRANBT) == 0 && (
  122.         objcts_1.oflag2[i - 1] & OPENBT) == 0) {
  123.         goto L1000;
  124.     }
  125.  
  126. /* OBJ IS VISIBLE AND OPEN OR TRANSPARENT */
  127.  
  128.     i__2 = objcts_1.olnt;
  129.     for (j = 1; j <= i__2; ++j) {
  130.         if (objcts_1.ocan[j - 1] == i && (objcts_1.oflag1[j - 1] & 
  131.             ONBT) != 0) {
  132.         return ret_val;
  133.         }
  134. /* L500: */
  135.     }
  136. L1000:
  137.     ;
  138.     }
  139.     ret_val = FALSE_;
  140.     return ret_val;
  141. } /* lit_ */
  142.  
  143. /* WEIGHT- RETURNS SUM OF WEIGHT OF QUALIFYING OBJECTS */
  144.  
  145. /* DECLARATIONS */
  146.  
  147. integer weight_(rm, cn, ad)
  148. integer rm;
  149. integer cn;
  150. integer ad;
  151. {
  152.     /* System generated locals */
  153.     integer ret_val, i__1;
  154.  
  155.     /* Local variables */
  156.     integer i, j;
  157.  
  158.     ret_val = 0;
  159.     i__1 = objcts_1.olnt;
  160.     for (i = 1; i <= i__1; ++i) {
  161. /*                         !OMIT BIG FIXED ITEMS. */
  162.     if (objcts_1.osize[i - 1] >= 10000) {
  163.         goto L100;
  164.     }
  165. /*                         !IF FIXED, FORGET IT. */
  166.     if (qhere_(i, rm) && rm != 0 || objcts_1.oadv[i - 1] == ad && ad 
  167.         != 0) {
  168.         goto L50;
  169.     }
  170.     j = i;
  171. /*                         !SEE IF CONTAINED. */
  172. L25:
  173.     j = objcts_1.ocan[j - 1];
  174. /*                         !GET NEXT LEVEL UP. */
  175.     if (j == 0) {
  176.         goto L100;
  177.     }
  178. /*                         !END OF LIST? */
  179.     if (j != cn) {
  180.         goto L25;
  181.     }
  182. L50:
  183.     ret_val += objcts_1.osize[i - 1];
  184. L100:
  185.     ;
  186.     }
  187.     return ret_val;
  188. } /* weight_ */
  189.